1. Field of the Invention
The present invention relates to protecting computing systems from loss of data due to software faults, and more particularly, to fast restoration of the computing systems in case of data corruption as a result of software execution.
2. Related Art
With the popularity and success of the Internet, server technologies are of great commercial importance today. An individual server application typically executes on a single physical host computer, servicing client requests.
In conventional systems, the data of the server is typically backed up on some storage device in the form of backup files. If the server crashes or fails, or if the software becomes corrupted, it may become necessary to restore the state of the server to some previously backed-up state.
Usually, the conventional backup process consists of three steps: (1) the machine is taken out of service; (2) the data is backed up to the backup storage, e.g., a disk drive, used by the server; and (3) the server is restarted. In case of a crash or failure, data is restored from the backup image, and the server is restarted.
Conventional methodology for restoring computing systems normally requires a full or partial backup of relevant data that may be corrupted or modified in an illegal manner, and then, in case of a crash, restoration of the data from the backup. These procedures are generally fairly time- and memory-consuming, since two conversions of data are required in case of system fault.
Such procedures require a lot of downtime, since during the back up and restoration, the server is inoperable. This is inefficient, disrupts normal operations, and is usually unnecessary, given that the vast majority of the data on the local drive is frequently unaltered, notwithstanding the fact that the entire local drive is backed up.
In corporate networks, a typical server can have 100-200 Gigabytes (or, frequently, much more than that) of data. With a transfer rate of up to 100 Megabytes per second over a network, it would take approximately 1,000-2,000 seconds to transfer all the data from the backup storage to the server's local storage. This assumes that the entire network bandwidth is available for this process. Frequently, this is not the case, since only a fraction of the bandwidth may actually be available at any given time for restoring the files from backup. In practice, such transfers of data from backup to the server's local storage can take many hours.
Also, even 1,000 seconds of downtime is an extremely long time, particularly for many mission-critical applications. For example, if the server in question is a web server that handles customer requests or sales, a period of 16-20 minutes of downtime can result in substantial lost sales. Furthermore, it is generally believed that for many e-commerce applications, consumer attention span is relatively short, and a customer that does not receive a rapid response from a web server will simply go to a competitor's website.
One of the problems that arises in the context of testing or running of a new software is protection or preservation of the contents of the hard drive (or some other storage medium) as of a particular point in time. For example, the hard drive may contain data and executable files at some particular time t1 that is known to be “correct” (or valid in some sense) and virus-free. A user or a software developer may wish to install additional software that does not have a presumption of validity, or a presumption of being virus-free. Thus, the original disk contents at the time t1 needs to be stored in some manner, so that, in the event that the new software is defective, or contains viruses, or corrupts the contents of the hard drive, the original contents of the hard drive at the time t1 can be rapidly restored at the time t2, assuring continuity and system functionality.
Therefore, there is a need in the art for an efficient and fast data restoration to a pre-defined restoration point, as well as for a more efficient method of restoring data of a computer system. Also, there is a need to be able take a snapshot of a hard drive, and to be able to restore the condition of the system to the contents of the snapshot with minimum overhead and as rapidly as possible.